﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using DrugStore.Utility;
using System.Web.Security;
namespace DrugStore.Models
{
    #region Models

    public class LogOnModel
    {
        [Required]
        [DisplayName("Tên đăng nhập")]
        [RegularExpression("^[a-zA-Z0-9_-]{3,50}$", ErrorMessage = "Tên đăng nhập không hợp lệ")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [DisplayName("Mật khẩu")]
        public string Password { get; set; }

        [DisplayName("Ghi nhớ đăng nhập")]
        public bool RememberMe { get; set; }

        public string SessionId { get; set; }
    }
    #endregion
    #region Business
    public class Authentication
    {
        private Utilities Utils = new Utilities();
    
        public String Identify
        {
            get
            {
                return HttpContext.Current.User.Identity.Name;
            }
        }

        public void LogOn(LogOnModel model) 
        {
            string username = HttpUtility.HtmlEncode(model.UserName);
            string password = HttpUtility.HtmlEncode(model.Password);

            DrugStoreEntities entity = new DrugStoreEntities();
            Admin admin = entity.Admins.FirstOrDefault(a=>a.Name == model.UserName);
            
            if(admin == null)
            {
                throw new Exception("Tên đăng nhập hoặc mật khẩu không đúng");
            }
            //if (admin.Password != Utils.HashPassword(username, password))
            //{
            //    throw new Exception("Tên đăng nhập hoặc mật khẩu không đúng");
            //}

            FormsAuthentication.SetAuthCookie(model.UserName, false);
        }

        public void LogOut(String userName) 
        {
            DrugStoreEntities entities = new DrugStoreEntities();            
            FormsAuthentication.SignOut();
        }

        public void AdminLogOn(LogOnModel model)
        {
            string username = HttpUtility.HtmlEncode(model.UserName);
            string password = HttpUtility.HtmlEncode(model.Password);

            DrugStoreEntities entities = new DrugStoreEntities();
            Admin account = entities.Admins.FirstOrDefault(a => a.Name == model.UserName);

            if (account == null)
            {
                throw new Exception("Tên đăng nhập hoặc mật khẩu không đúng");
            }

            if (account.Password != Utils.HashPassword(username, password))
            {
                throw new Exception("Tên đăng nhập hoặc mật khẩu không đúng");
            }          
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
        }
    }
    #endregion
}